home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Diamond Collection / The Diamond Collection (Software Vault)(Digital Impact).ISO / cdr44 / newmat08.zip / NEWMATAP.H < prev    next >
C/C++ Source or Header  |  1995-01-11  |  3KB  |  101 lines

  1. //$$ newmatap.h           definition file for matrix package applications
  2.  
  3. // Copyright (C) 1991,2,3,4: R B Davies
  4.  
  5. #ifndef MATRIXAP_LIB
  6. #define MATRIXAP_LIB 0
  7.  
  8. #include "newmat.h"
  9.  
  10.  
  11. /**************************** applications *****************************/
  12.  
  13.  
  14. void QRZT(Matrix&, LowerTriangularMatrix&);
  15.  
  16. void QRZT(const Matrix&, Matrix&, Matrix&);
  17.  
  18. void QRZ(Matrix&, UpperTriangularMatrix&);
  19.  
  20. void QRZ(const Matrix&, Matrix&, Matrix&);
  21.  
  22. inline void HHDecompose(Matrix& X, LowerTriangularMatrix& L)
  23. { QRZT(X,L); }
  24.  
  25. inline void HHDecompose(const Matrix& X, Matrix& Y, Matrix& M)
  26. { QRZT(X, Y, M); }
  27.  
  28. ReturnMatrix Cholesky(const SymmetricMatrix&);
  29.  
  30. ReturnMatrix Cholesky(const SymmetricBandMatrix&);
  31.  
  32. void SVD(const Matrix&, DiagonalMatrix&, Matrix&, Matrix&,
  33.     Boolean=TRUE, Boolean=TRUE);
  34.  
  35.  
  36. void SVD(const Matrix&, DiagonalMatrix&);
  37.  
  38. inline void SVD(const Matrix& A, DiagonalMatrix& D, Matrix& U,
  39.    Boolean withU = TRUE) { SVD(A, D, U, U, withU, FALSE); }
  40.  
  41. void Jacobi(const SymmetricMatrix&, DiagonalMatrix&);
  42.  
  43. void Jacobi(const SymmetricMatrix&, DiagonalMatrix&, SymmetricMatrix&);
  44.  
  45. void Jacobi(const SymmetricMatrix&, DiagonalMatrix&, Matrix&);
  46.  
  47. void Jacobi(const SymmetricMatrix&, DiagonalMatrix&, SymmetricMatrix&,
  48.    Matrix&, Boolean=TRUE);
  49.  
  50. void EigenValues(const SymmetricMatrix&, DiagonalMatrix&);
  51.  
  52. void EigenValues(const SymmetricMatrix&, DiagonalMatrix&, SymmetricMatrix&);
  53.  
  54. void EigenValues(const SymmetricMatrix&, DiagonalMatrix&, Matrix&);
  55.  
  56. class SymmetricEigenAnalysis
  57. // not implemented yet
  58. {
  59. public:
  60.    SymmetricEigenAnalysis(const SymmetricMatrix&);
  61. private:
  62.    DiagonalMatrix diag;
  63.    DiagonalMatrix offdiag;
  64.    SymmetricMatrix backtransform;
  65.    FREE_CHECK(SymmetricEigenAnalysis)
  66. };
  67.  
  68. void SortAscending(GeneralMatrix&);
  69.  
  70. void SortDescending(GeneralMatrix&);
  71.  
  72.  
  73. void FFT(const ColumnVector&, const ColumnVector&,
  74.    ColumnVector&, ColumnVector&);
  75.  
  76. void FFTI(const ColumnVector&, const ColumnVector&,
  77.    ColumnVector&, ColumnVector&);
  78.  
  79. void RealFFT(const ColumnVector&, ColumnVector&, ColumnVector&);
  80.  
  81. void RealFFTI(const ColumnVector&, const ColumnVector&, ColumnVector&);
  82.  
  83.  
  84. /********************** linear equation solving ****************************/
  85.  
  86. class LinearEquationSolver : public BaseMatrix
  87. {
  88.    GeneralMatrix* gm;
  89.    int search(const BaseMatrix*) const { return 0; }
  90.    friend class BaseMatrix;
  91. public:
  92.    LinearEquationSolver(const BaseMatrix& bm);
  93.    ~LinearEquationSolver() { delete gm; }
  94.    void CleanUp() { delete gm; } 
  95.    GeneralMatrix* Evaluate(MatrixType) { return gm; }
  96.    // probably should have an error message if MatrixType != UnSp
  97.    NEW_DELETE(LinearEquationSolver)
  98. };
  99.  
  100. #endif
  101.